package com.iskyline.demo.leetcode;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;

/**
 * @author iskyline
 * @version 11
 * @createTime 2023年11月15日 19:58:00
 */
public class Solution004Median {

    public static void main(String[] args) {
        Solution004Median solution004Median = new Solution004Median();
        int[] nums1 = {1,3};
        int[] nums2 = {2};
        System.out.println(solution004Median.findMedianSortedArrays(nums1,nums2));;
    }

    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        //新数组长度
        int len = nums1.length+nums2.length;
        //新数组
        int[] numNew = new int[nums1.length+nums2.length];
        //两个数组的取值下标
        int a =0,b = 0;
        //中位数两个下标值：数组长度是奇数时，中位数值为一个值；为偶数时，是两个值
        int m1 = BigDecimal.valueOf((len-1)/ 2.0).setScale(0, RoundingMode.DOWN).intValue();
        int m2 = BigDecimal.valueOf((len-1)/ 2.0).setScale(0, RoundingMode.CEILING).intValue();

        //两个中位值
        int mv1 = 0,mv2 = 0;

        for (int i = 0; i < numNew.length; i++) {
            if(a<nums1.length && b<nums2.length){
                if(nums1[a] <= nums2[b]){
                    numNew[i] = nums1[a];
                    a++;
                }else {
                    numNew[i] = nums2[b];
                    b++;
                }
            }else if(a>=nums1.length){
                numNew[i] = nums2[b];
                b++;
            }else {
                numNew[i] = nums1[a];
                a++;
            }

            if(i==m1){
                mv1 = numNew[i];
            }
            if(i==m2){
                mv2 = numNew[i];
            }
            //找到中位数，跳出循环
//            if(mv2 !=0){
//                break;
//            }
        }

        System.out.println(Arrays.toString(numNew));

        return (mv1+mv2)/2.0;
    }

}
